
package com.dhcc.bpm.modules.api.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.dhcc.bpm.modules.api.entity.Product;
import com.dhcc.bpm.modules.api.vo.OpcAppApiVo;
import com.dhcc.bpm.modules.api.vo.ProdListVo;
import com.dhcc.bpm.modules.api.vo.ProductVO;
import com.dhcc.bpm.modules.api.vo.productListVo;
import com.dhcc.bpm.modules.common.vo.SelectVo;
import org.springblade.core.mp.base.BaseService;

import java.util.List;

/**
 * @ClassName IProductService
 * @Description 产品表 服务类
 * @Author daina
 * @Date 2020/2/25 15:22
 * @Version V1.0
 * @Copyright: 2020 东华软件 . All rights reserved.
 */
public interface IProductService extends BaseService<Product> {

	/**
	 * @Description 自定义分页
	 * @Author daina
	 * @Date 15:50 2020/2/25
	 * @param page
 * @param product
	 * @return IPage<ProductVO>
	 **/
	IPage<ProductVO> selectProductPage(IPage<ProductVO> page, ProductVO product);
	List<ProductVO> selectProductApiPage(ProductVO product);
	/**
	 * @Description 分页查询
	 * @Author daina
	 * @Date 15:50 2020/2/25
	 * @param page
	 * @param product
	 * @return com.baomidou.mybatisplus.core.metadata.IPage<com.dhcc.bpm.modules.api.vo.ProductVO>
	 **/
	IPage<ProductVO> listAppProductPage(IPage<ProductVO> page, ProductVO product);

	/**
	* @author: 陈泽
	* @date: 2019/12/16 11:16
	* @description: 获取详情
	* @param:
	* @return:
	*/
	 Product getDetil(Product product);

	 /**
	  * @Description 产品
	  * @Author sjm
	  * @Date 19:06 2020/2/25 0025
	  * @param id
	  * @return com.dhcc.bpm.modules.api.entity.Product
	  **/
	 productListVo selectProductApiList(Long id, String apiIds);
    /**
	  * @Description 根据id
	  **/
	 productListVo selectById(Long id);

	 List<OpcAppApiVo> selectAppApi(Long opcProductId);

    /**
     * @Description 产品信息集合
     * @Author sjm
     * @Date 19:12 2020/2/26 0026
     * @param id
     * @return java.util.List<com.dhcc.bpm.modules.api.vo.ProdListVo>
     **/
	List<ProdListVo> selectProdList(Long id);

	/**
	 * @Description 根据产品id查询
	 * @Author sjm
	 * @Date 20:05 2020/3/3 0003
	 * @param id
	 * @return com.dhcc.bpm.modules.api.vo.productListVo
	 **/
	productListVo selectUserById(Long id);

	/**
	 * @Description 根据产品id查询
	 * @Author sjm
	 * @Date 10:30 2020/3/4 0004
	 * @param id
	 * @return com.dhcc.bpm.modules.api.vo.productListVo
	 **/
	productListVo selectProById(Long id);

	/**
	 * @Description 某一系统下产品集合
	 * @Author Mdd
	 * @Date 2020/3/11 11:53
	 * @param sysId 系统主键
	 * @return java.util.List<com.dhcc.bpm.modules.api.entity.Product>
	 **/
    List<Product> syslist(String sysId);

    /**
     * @Description 查询已发布的产品
     * @Author sjm
     * @Date 15:05 2020/3/21 0021
     * @param page
     * @param product
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.dhcc.bpm.modules.api.vo.ProductVO>
     **/
    IPage<ProductVO> fetchListRelease(IPage<ProductVO> page, ProductVO product);

    /**
     * @Description 根据所属系统查询集合
     * @Author sjm
     * @Date 18:13 2020/3/28 0028
     * @param opcSysId
     * @return java.util.List<com.dhcc.bpm.modules.api.entity.BaseProduct>
     **/
    List<Product> selectBySysId(Long opcSysId);

/**
 * @Description TODO
 * @Author xiafayu
 * @Date 2020/5/21 11:22
 * @param productCode 
 * @return com.dhcc.bpm.modules.api.entity.Product
 * @throws 
 **/
	String findByProductCode(String productCode);


	 int  updateStsByName(Product product);
	Product selectProductByName(String productName);

	List<ProductVO> selectByProductCode(String productCode);
	List<ProductVO> selectProductApi(Long productId);
	List<ProductVO> selectProductList(ProductVO productVO);
	List<ProductVO> selectProductBySysId(ProductVO productVO);
	List<ProductVO> selectProductByBaseProduct(ProductVO productVO);

	/**
	 * @Description 查询
	 * @Author daina
	 * @Date 15:49 2020/2/25
	 * @param
	 * @return java.util.List<com.dhcc.bpm.modules.common.vo.SelectVo>
	 **/
	List<SelectVo> selectByProductName();

	List<ProductVO> queryProduct();
}
